package guice.boot.archive.spi.registry;

/**
 * Service Metadata which contains Service metadata information
 * Service is unique by service anme and plugin name
 */
public interface ServiceMetaData {

    /**
     * get service id, different service implementation of same interface can be recognised by uniqueId
     *
     * @return service name
     */
    String getUniqueId();

    /**
     * get Service Interface Class
     *
     * @return interface class
     */
    Class<?> getServiceInterfaceClass();


    ServiceProvider getServiceProvider();

    /**
     * Service name, generally speaking, it's combined by {@link ServiceMetaData#getUniqueId()} and
     * {@link ServiceMetaData#getServiceInterfaceClass}
     *
     * @return
     */
    String getServiceName();

}